package Controlador;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import DAO.CuentaDAO;
import logica.TransferenciasSalienteValidacion;
import model.Cuenta;
import clienteWS_BCE.Transferencia;

@ManagedBean
public class TransferenciaBean 
{
	//Dependencias
	@Inject
	TransferenciasSalienteValidacion transEJB;
	@Inject
	CuentaDAO ctaDAO;
	
	//Propiedades
	Transferencia transferencia=new Transferencia ();
	List<Cuenta> cuentas;
	Cuenta cuentaSeleccionada;
	Double monto;

	public Double getMonto() {
		return monto;
	}


	public void setMonto(Double monto) {
		this.monto = monto;
	}


	@PostConstruct
	public void cargarDatos()
	{
		ExternalContext cntxt = FacesContext.getCurrentInstance().getExternalContext(); 
		HttpServletRequest req = (HttpServletRequest) cntxt.getRequest(); 
		cuentas=this.ctaDAO.listarCuentasCliente(req.getUserPrincipal().getName());
		
	}
	
	
	//Encapsulacion
	public Transferencia getTransferencia() {return transferencia;	}
	public void setTransferencia(Transferencia transferencia) {this.transferencia = transferencia;}
	
	public List<Cuenta> getCuentas() {	return cuentas;}
	public void setCuentas(List<Cuenta> cuentas) {	this.cuentas = cuentas;}

	public Cuenta getCuentaSeleccionada() {	return cuentaSeleccionada;	}
	public void setCuentaSeleccionada(Cuenta cuentaSeleccionada) {	this.cuentaSeleccionada = cuentaSeleccionada;}
	
	
	//ActionControllers
	public String transferir()
	{

		System.out.println("transfiriendo...");
		
        FacesContext ctx = FacesContext.getCurrentInstance();
        try{
        if(cuentaSeleccionada!=null)
        { 	
        		transferencia.setCtaOrigen(cuentaSeleccionada.getCtaId());
        		transferencia.setMonto(monto);
		        String respuesta=transEJB.transferir(transferencia);
		        System.out.println(respuesta);
		        ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Sistema", respuesta));                                             
        }
        }catch(Exception e){
        ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Sistema", "Error al realizar la transferencia"));                                             
        }

		return null;
	}
}